import { DataTypes } from "sequelize";
import sequelize from "../db/seq.js";

const Skill = sequelize.define("Skill", { name: DataTypes.STRING });
const Hero = sequelize.define("hero", {
  name: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    comment: "英雄名称",
  },
  // 英雄id
  heroId: {
    type: DataTypes.INTEGER,
    primaryKey: true, // 设置为主键
    autoIncrement: true, // 自动递增
    allowNull: false, // 不允许为空
    unique: true, // 确保唯一性（主键默认唯一，但显式声明更清晰）
    comment: "英雄id",
  },
  // 价格金币
  price: {
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: "价格",
  },

  //故事背景
  story: {
    type: DataTypes.TEXT,
    allowNull: false,
    comment: "故事背景",
  },
  // 英雄分类
  classification: {
    type: DataTypes.STRING,
    allowNull: false,
    type: DataTypes.ENUM("上单", "打野", "中路", "下路", "辅助"),
    allowNull: false, // 不允许为空
    validate: {
      isIn: [["上单", "打野", "中路", "下路", "辅助"]], // 确保值在枚举范围内
    },
    comment: "英雄分类",
  },
  // 英雄定位
  position: {
    type: DataTypes.STRING,
    allowNull: false, // 不允许为空
    type: DataTypes.ENUM("战士", "法师", "刺客", "坦克", "射手", "辅助"),
    allowNull: false,
    validate: {
      isIn: [["战士", "法师", "刺客", "坦克", "射手", "辅助"]], // 确保值在枚举范围内
    },
  },
  // 皮肤原画
  skin: {
    type: DataTypes.STRING,
    allowNull: true,

    comment: "皮肤原画",
  },
}); // 定义关联关系
Hero.hasMany(Skill, {
  foreignKey: "heroId",
  onDelete: "CASCADE", // 英雄删除时级联删除技能
  onUpdate: "CASCADE",
});

// Hero.sync({ force: true });
export default Hero;
